<?php

class AOrdenDespachoConsumiblesAdicional {

    public function __construct(){
	}
	public function marcaInstancias(EFacade & $facade)
	{
		$docODC = & $facade->getDocumentRoot();
	
		$usuario=NULL;
		//echo '<hr>  Slu ',$docDD;
		$ezpdo_= getManager();
		$cant = 0;
		$continuar = 1;
		
		foreach($docODC->instanciaProductos as & $listaInstancia){
			if($cant == 0){
				$cant = $listaInstancia->cantidadDespachada;
			}
			
			foreach($listaInstancia->instanciaProducto->almacenadoEn as & $Almacenes){
				$Almacenes->epSetDirty(TRUE);
				if($continuar){
					$cantidadReal = $listaInstancia->instanciaProducto->cantidadReal();
					$cant = $Almacenes->cantidad - $cant;
					if($cant >= 0){
						$Almacenes->cantidad = $Almacenes->cantidad - $listaInstancia->cantidadDespachada;
					}
					else{
						$Almacenes->cantidad = 0;
					}
					$continuar = 0;
					
				}else
				
					if($cant < 0){
						$cant1 = $cant * -1;
						$cantidadReal = $listaInstancia->instanciaProducto->cantidadReal();
						$cant = $Almacenes->cantidad - $cant1;
						if($cant >= 0){
							$Almacenes->cantidad = $Almacenes->cantidad - $cant1;
						}
						else{
							$Almacenes->cantidad = 0;
						}
						
					}
//					echo '<hr> aki ',$Almacenes->cantidad;
					$Almacenes->commit();
			}
			
			
			$continuar=TRUE;
			$cant = 0;
				
		}
//die('cool');
		$docODC->epSetDirty(TRUE);
		
		$workflows = & $facade->getWorkflow();
		$workflows->epSetDirty(TRUE);
		
		$transSetOSL = & EFacade :: getCurrentTransSetAuto($workflows, /* MTrans :: $TYPE_AUTO_AGENT */ 2);
		$listaWT= &$workflows->getWorkTransList();

		$transOSL = $transSetOSL->getTransByName('t3');
		$facade->fireTrans($transOSL,$usuario,'Creacion de Ordenes', TRUE);	
		
		$facade->saveWorkflow();
		$docODC->commit();
		
	}
	
	public function culminarDespacho(EFacade & $facade)
	{
		
		$docODC = & $facade->getDocumentRoot();
	
		$usuario=NULL;
		//echo '<hr>  Slu ',$docDD;
		$ezpdo_= getManager();
		$cant = 0;
		$continuar = 1;
		
		
		
		$docODC->epSetDirty(TRUE);
		
		$workflows = & $facade->getWorkflow();
		$workflows->epSetDirty(TRUE);
		
		$transSetOSL = & EFacade :: getCurrentTransSetAuto($workflows, /* MTrans :: $TYPE_AUTO_AGENT */ 2);
		$listaWT= &$workflows->getWorkTransList();

		$transOSL = $transSetOSL->getTransByName('t7');
		$facade->fireTrans($transOSL,$usuario,'Creacion de Ordenes', TRUE);	
		
		$facade->saveWorkflow();
		$docODC->commit();
	}
}
?>